package profession_handler

import (
	"github.com/gin-gonic/gin"
	"peilian-api/app/global/bind"
	"peilian-api/app/global/errors"
	"peilian-api/app/model"
	"peilian-api/app/services/profession_service"
	"peilian-api/utils/format"
)

// 获取职业信息
func GetProfession(ctx *gin.Context) {
	var req model.GetProfessionReq
	if err := bind.ShouldBinding(ctx, &req); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, errors.ParamBindError)
		return
	}
	out, err := profession_service.GetProfession(ctx, req)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessJson(out)
}

// 创建职业信息
func CreateProfession(ctx *gin.Context) {
	var req model.CreateProfessionReq
	if err := bind.ShouldBinding(ctx, &req); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, errors.ParamBindError)
		return
	}
	err := profession_service.CreateProfession(ctx, req)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessJson(struct{}{})
}

// 更新职业信息
func UpdateProfession(ctx *gin.Context) {
	var req model.UpdateProfessionReq
	if err := bind.ShouldBinding(ctx, &req); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, errors.ParamBindError)
		return
	}
	err := profession_service.UpdateProfession(ctx, req)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessJson(struct{}{})
}

// 删除职业信息
func DeleteProfession(ctx *gin.Context) {
	var req model.DeleteProfessionReq
	if err := ctx.ShouldBindJSON(&req); err != nil {
		format.NewResponseJson(ctx).Err(errors.PublicErrorCode, errors.ParamBindError)
		return
	}
	err := profession_service.DeleteProfession(ctx, req)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessJson(struct{}{})
}

func ImportProfession(ctx *gin.Context) {
	err := profession_service.ImportProfession(ctx)
	if err != nil {
		format.NewResponseJson(ctx).Err(err.Code, err.Err.Error())
		return
	}
	format.NewResponseJson(ctx).SuccessJson(struct{}{})
}
